home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
ab20
/
unarced
/
graphics
/
anim
/
displayanim0.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-17
|
5KB
|
180 lines
/* displayanim0.c
*
*/
#include "intuall.h"
#include <workbench/startup.h>
#include "libraries/dos.h"
#include "libraries/dosextens.h"
#include "ilbm.h"
#include "readpict.h"
#include "stdio.h"
#include "functions.h"
/* For WorkBench startup */
extern struct WBStartup *WBenchMsg;
BOOL fromWB;
struct FileLock *startLock, *newLock;
LONG file;
extern long marktime;
static ILBMFrame iframe;
extern struct Preferences *Prefs;
int loopplay,continuousplay;
extern int ScreenNTSC;
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct IconBase *IconBase;
struct DosBase *DosBase;
extern struct View *graphics;
/* ================================================ */
LONG OpenArg(argc,argv)
int argc;
char **argv;
{
char *filename;
struct WBArg *arg;
int i,j;
char *str;
j = 0;
fromWB = (argc==0) ? TRUE : FALSE;
if((argc>1)&&(*argv[1] != '?')) { /* Passed filename via command line */
for (i=1;i<argc;i++) {
str = argv[i];
if (*str == '-') {
while (*++str) {
switch (*str) {
case 'l':
case 'L':
loopplay = 0;
while (*++str) {
loopplay = (loopplay * 10) + (*str - '0');
}
--str;
if (loopplay <= 0) loopplay = 10000;
break;
case 'c':
case 'C':
continuousplay = 0;
while (*++str) {
continuousplay = (continuousplay * 10) + (*str - '0');
}
--str;
if (continuousplay <= 0) continuousplay = 10000;
break;
default:
printf("'%c' bad option\n",*str);
break;
}
}
}
else {
if (j) {
puts("Only one file may be specified");
exit(1L);
}
j = i;
}
}
}
else if ((argc==0)&&(WBenchMsg->sm_NumArgs > 1)) {
arg = WBenchMsg->sm_ArgList;
arg++;
filename = (char *)arg->wa_Name;
newLock = (struct FileLock *)arg->wa_Lock;
startLock = (struct FileLock *)CurrentDir(newLock);
return (Open(filename,(long)MODE_OLDFILE));
}
if (j == 0) {
puts("Usage: 'DisplayANIM [-L#] [-C#] filename");
puts(" -L# non-continuous loop play");
puts(" # is optional no. of times to loop");
puts(" default is 10000 loops");
puts(" -C# continuous loop play");
puts(" # is optional no. of times to loop");
puts(" default is 10000 loops");
GoodBye("T.T.F.N."); /* contrary to many people's concerns, this is
not an obscure error message. For those not
already familiar with Winnie the Pooh, this
is the famous parting message by Tigger which
stands for "Ta Ta For Now". There have even
been inquiries to the product support people
at Aegis regarding this cryptic message. */
}
return (Open(argv[j],(long)MODE_OLDFILE));
}
_abort()
{
int i;
DBCloseGraphics();
puts("*** User Abort ***");
ClosePreLoadIFF();
if (Prefs) FreeMem(Prefs,(long)sizeof(struct Preferences));
for (i=0;i<2;i++) DBCloseBuffer(i);
if (GfxBase) CloseLibrary(GfxBase);
if (IntuitionBase) CloseLibrary(IntuitionBase);
if (DosBase) CloseLibrary(DosBase);
exit(1);
}
GoodBye(msg)
char *msg;
{
int i;
DBCloseGraphics();
puts(msg);
ClosePreLoadIFF();
if (Prefs) FreeMem(Prefs,(long)sizeof(struct Preferences));
for (i=0;i<2;i++) DBCloseBuffer(i);
if (GfxBase) CloseLibrary(GfxBase);
if (IntuitionBase) CloseLibrary(IntuitionBase);
if (DosBase) CloseLibrary(DosBase);
exit(0);
}
void OpenLibs()
{
GfxBase = NULL;
IntuitionBase = NULL;
IconBase = NULL;
DosBase = NULL;
graphics = NULL;
if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",0L)))
GoodBye("No graphics library");
if (!(IntuitionBase
= (struct IntuitionBase *)OpenLibrary("intuition.library",0L)))
GoodBye("No intuition library");
if (!(DosBase = (struct DosBase *)OpenLibrary("dos.library",0L)))
GoodBye("No dos library");
}
LoadAnim(fname)
char *fname;
{
IFFP iffp = NO_FILE;
if (file) iffp = PreLoadAnimation(fname,file,&iframe);
if (newLock != startLock) CurrentDir(startLock);
Close(file);
if (iffp != IFF_DONE) {
printf("Load of %s failed: Iff status %ld\n",fname,(long)iffp);
return(1);
}
return(0);
}